package com.demo.core.service.base;

import java.util.List;

import com.demo.core.model.MemberRole;
import com.demo.core.model.Role;
/**
 * 会员角色相关服务
 * 
 * @author ryuu.kk
 *
 */
public interface MemberRoleService {

	/**
	 * 创建会员角色关系模型
	 * @param memberRole 会员角色关系模型
	 * @return 主键ID
	 */
	Long save(MemberRole memberRole);
	/**
	 * 会员角色模型是否存在
	 * @param id 主键ID
	 * @return 是否存在
	 */
	boolean exists(Long id);
	/**
	 * 删除会员角色关系模型
	 * @param memberRoleId 会员角色表外键ID
	 */
	void delete(Long memberRoleId);
	
	/**
	 * 删除会员所有的角色模型
	 * @param memberId 会员ID
	 */
	void deleteAll(Long memberId);
	
	/**
	 * 更新会员角色关系模型
	 * @param memberRoleId 外键ID
	 * @param enabled 是否可用
	 */
	void updateEnabled(Long memberRoleId, boolean enabled);
	
	/**
	 * 通过ID查询会员角色模型
	 * @param id 主键ID
	 * @return 会员角色模型
	 */
	MemberRole find(Long id);
	
	/**
	 * 通过角色ID取得对应的会员角色模型列表
	 * @param roleId 角色ID
	 * @return 会员角色模型列表
	 */
	List<MemberRole> findMember(Long roleId);
	
	/**
	 * 通过会员ID取得对应的会员角色模型列表
	 * @param memberId 会员ID
	 * @return 会员角色模型列表
	 */
	List<MemberRole> findRole(Long memberId);
	
	/**
	 * 通过会员ID查询用户角色
	 * @param memberId 会员id
	 * @return 会员角色列表
	 */
	List<Role> queryRole(Long memberId);
	
	/**
	 * 通过会员ID查询用户角色
	 * @param siteId 站点id
	 * @param userId 用户id
	 * @return 角色列表
	 */
	List<Role> queryRole(Long siteId, Long userId);
}
